package com.ymttest.business.service;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;

import org.omg.CORBA.INTERNAL;

import net.sf.json.JSONObject;

import com.ymatou.app.seller.parameter.AddProductV2Bean;
import com.ymatou.app.seller.parameter.BrandBean;
import com.ymatou.app.seller.parameter.CategoryBean;
import com.ymatou.app.seller.service.AddProductV2Call;
import com.ymatou.sellerproduct.api.parameter.AddSellerProductBean;
import com.ymatou.sellerproduct.api.parameter.CatalogNewData;
import com.ymatou.sellerproduct.api.parameter.ProductAndCatalogNewData;
import com.ymatou.sellerproduct.api.parameter.T_CatelogProperty;
import com.ymatou.sellerproduct.api.parameter.T_CatelogPropertyValue;
import com.ymatou.sellerproduct.api.service.AddSellerProductCall;
import com.ymt.core.tool.Logger;
import com.ymttest.database.sqlwapper.AppDefaultWapper;
import com.ymttest.database.sqlwapper.DefaultWapper;
import com.ymttest.database.sqlwapper.YmtCatalogsWapper;
import com.ymttest.database.sqlwapper.YmtUsersWapper;
import com.ymttest.utils.TestDataManager;
import com.ymttest.utils.YMTDateUtil;

public class ProductCallService {
    /**
     * 创建一个M商品<br>
     * 根据策略不同会生成不同规则的产品<br>
     * 1.<br>
     * 国内快递 现货 国内 支持 本土退货 限购 1000000 件 价格1元 库存 1000000 国内快递<br>
     * 2.<br>
     * 直邮 代购 海外 不支持退货 限购 1件 价格99元 库存2 直邮<br>
     * 3.<br>
     * 贝海直邮 FBX 海外 支持 官方本土退货 限购 5件 价格49元 库存20 贝海直邮<br>
     * 4.<br>
     * 卖家保税 现货 保税 不支持退货 限购 2件 价格109元 库存5 Bonded<br>
     * 5.<br>
     * FBX贝海保税 FBX 保税 支持 官方本土退货 限购 3件 价格29元 库存2000 FBXbonded<br>
     * 6.<br>
     * 认证直邮 代购 海外 不支持退货 不限购 价格999元 库存9999999 Proxy<br>
     * 7.<br>
     * 拼邮 代购 海外 不支持退货 不限购 价格69元 库存50<br>
     * 
     * @param mode 1国内快递、2直邮、3贝海直邮、4卖家保税、5FBX贝海保税、6认证直邮、7拼邮
     * @param sellerid 商家id
     * @return Map productinfo<br>
     *         {productid=e4dc15ee-e5bc-4a22-912e-9178e1aa4caf, price=1,
     *         pic=http://p243.img.ymatou.com
     *         :10243/upload/productdes/3afa103d4ec4466f824b9f0458d6f4e2.jpg,
     *         productName=接口自动化测试Test216bb8d258ab4e1786b5e12e1484da34}
     */
    public static HashMap<String, Object> createProduct(int sellerId, int mode) {
        HashMap<String, Object> productInfo = new HashMap<String, Object>();
        String productId = null;
        // 1国内快递、2直邮、3贝海直邮、4卖家保税、5FBX贝海保税、6认证直邮、7拼邮
        int catalogStatus = 0;
        // 商品类型，0现货、1代购、2FBX
        int catalogType = 0;
        int firstCatalogId ;
        int secondCatalogId ;
        // 库存位置 0海外，1保税，2国内
        int inventoryLocation = 0;
        // 是否支持退货，0不支持1支持
        int acceptReturn = 0;
        // 退货条件 0不支持、1本土退货、2官方本土退货
        int localReturn = 0;
        // 限购数量
        int limitNum = 0;
        // 商品价格
        Object price;
        // 库存
        int num = 0;
        // 是否限购
        boolean islimit = true;
        // // SailProtect = 1, 贝海直邮 Proxy = 2, 认证直邮 PingYou = 3, ZhiYou = 4,
        // Bonded = 5, China = 6, FBXxlobo = 7,贝海直邮FBXbonded = 8,贝海保税
        int iLogisticsChannel = 0;
        switch (mode) {
            case 1:
                // 国内快递 现货 国内 支持 本土退货 限购 1000000 件 价格1元 库存 1000000 国内快递
                catalogStatus = 1;
                catalogType = 0;
                inventoryLocation = 2;
                acceptReturn = 1;
                localReturn = 1;
                limitNum = 1000000;
                price = 1;
                num = 1000000;
                iLogisticsChannel = 6;
                break;
            case 2:
                // 直邮 代购 海外 不支持退货 限购 1件 价格99元 库存2 直邮
                catalogStatus = 2;
                catalogType = 1;
                inventoryLocation = 0;
                acceptReturn = 0;
                localReturn = 0;
                limitNum = 1;
                price = 99;
                num = 2;
                iLogisticsChannel = 4;
                break;
            case 3:
                // 贝海直邮 FBX 海外 支持 官方本土退货 限购 5件 价格49元 库存20 贝海直邮
                catalogStatus = 3;
                catalogType = 2;
                inventoryLocation = 0;
                acceptReturn = 1;
                localReturn = 2;
                limitNum = 5;
                price = 49;
                num = 20;
                iLogisticsChannel = 7;
                break;
            case 4:
                // 卖家保税 现货 保税 不支持退货 限购 2件 价格109元 库存5 Bonded
                catalogStatus = 4;
                catalogType = 0;
                inventoryLocation = 1;
                acceptReturn = 0;
                localReturn = 0;
                limitNum = 2;
                price = 109;
                num = 5;
                iLogisticsChannel = 5;
                break;
            case 5:
                // FBX贝海保税 FBX 保税 支持 官方本土退货 限购 3件 价格29元 库存2000 FBXbonded
                catalogStatus = 5;
                catalogType = 2;
                inventoryLocation = 1;
                acceptReturn = 1;
                localReturn = 2;
                limitNum = 3;
                price = 29;
                num = 2000;
                iLogisticsChannel = 8;
                break;
            case 6:
                // 认证直邮 代购 海外 不支持退货 不限购 价格999元 库存9999999 Proxy
                catalogStatus = 6;
                catalogType = 1;
                inventoryLocation = 0;
                acceptReturn = 0;
                localReturn = 0;
                limitNum = 0;
                price = 999;
                num = 9999999;
                iLogisticsChannel = 2;
                islimit = false;
                break;
            case 7:
                // 拼邮 代购 海外 不支持退货 不限购 价格69元 库存50
                catalogStatus = 7;
                catalogType = 1;
                inventoryLocation = 0;
                acceptReturn = 0;
                localReturn = 0;
                limitNum = 0;
                price = 69;
                num = 50;
                islimit = false;
                iLogisticsChannel = 4;
                break;
            default:
                Logger.debug("createProduct创建产品模式错误，创建失败");
                return null;
        }
        try {
            Logger.debug("catalogStatus:" + catalogStatus);
//            AddSellerProductBean addproductbean = new AddSellerProductBean();
//            AddSellerProductCall addproductcall = new AddSellerProductCall();
//            String rid = TestDataManager.getRandomUUID().toString().replaceAll("-", "");
//            ProductAndCatalogNewData product = new ProductAndCatalogNewData();
//            product.setiMainCategoryId(1001);;
//            product.setiThirdCategoryId(1003);
//            product.setiCategoryId(1002);
//            product.setiSubCategoryId(1004);
//            //product.setiThirdCategoryId(1003);
//            product.setIsSailProtected(false);
//            String productName = "接口自动化测试Test";
//            product.setProductName(productName);
//            String pic = "http://p243.img.ymatou.com:10243/upload/productdes/3afa103d4ec4466f824b9f0458d6f4e2.jpg";
//            product.setPictureUrl1(pic);
//            product.setPictureUrl2("http://p243.img.ymatou.com:10243/upload/productdes/7749d985e60e45a7a7c556873775f998.jpg");
//            product.setPictureUrl3("http://172.16.100.64/group1/M00/00/BC/rBBkQFWadMOAALiKAAFuo51Y5lA987.jpg");
//            product.setDescription("接口自动化测试Test description");
//            // 品牌ID select top 10 *from Ymt_ProductBrand
//            product.setiBrandId(10145);
//            // 是否退货
//            product.setAcceptReturn(acceptReturn);
//            // 退货条件 0不支持、1本土退货、2官方本土退货
//            product.setLocalReturn(localReturn);
//            // 配送方式 1国内快递、2直邮、3贝海直邮、4卖家保税、5FBX贝海保税、6认证直邮、7拼邮
//            product.setCatalogStatus(catalogStatus);
//            // 库存位置 0海外，1保税，2国内
//            product.setInventoryLocation(inventoryLocation);
//            // 新的配送方式
//            product.setLogisticsChannel(iLogisticsChannel);
//            // 商品类型，0现货、1代购、2FBX
//            product.setCatalogType(catalogType);
//            // 保税仓默认杭州保税仓
//            product.setBondedArea(3);
//            DecimalFormat df = new DecimalFormat("0.00");// 保留两位小数
//            BigDecimal weight = new BigDecimal(1);
//            product.setWeight(weight);
//            product.setLimited(islimit);
//            product.setLimitNum(limitNum);
//            Date now = YMTDateUtil.getDate();
//            String fnow = YMTDateUtil.getFormatTime(now, "yyyy/MM/dd HH:mm:ss");
//            String fnow2 = YMTDateUtil.getFormatTime(now, "MM/dd/yyyy HH:mm:ss");
//            String ffuture = YMTDateUtil.getBeforeOrNextDay(1, "MM/dd/yyyy HH:mm:ss");
//            product.setLimitNumStartTime(fnow);
//            product.setAvailable(true);
//            // product.setProductProperty("NewPropertyName_1=商品属性Key&NewProperty_1=商品属性Value&");
//            product.setAvailableNow(true);
//            product.setValidStart(fnow2);
//            product.setValidEnd(ffuture);
//            product.setAutoRefresh(true);
//            product.setFreightForBuyerType(-1);
//            product.setUseDuplicateSKU(false);
//            List<CatalogNewData> catalogs = new ArrayList<CatalogNewData>();
//            CatalogNewData catalog = new CatalogNewData();
//            catalog.setPrice(new BigDecimal(df.format(price)));
//            catalog.setNum(num);
//            catalog.setSKU("YMT" + rid);
//            List<T_CatelogProperty> propertyValues = new ArrayList<T_CatelogProperty>();
//            T_CatelogProperty e = new T_CatelogProperty();
//            e.setPropertyName("颜色分类");
//            List<T_CatelogPropertyValue> pv = new ArrayList<T_CatelogPropertyValue>();
//            T_CatelogPropertyValue cpv = new T_CatelogPropertyValue();
//            cpv.setPropertyValue("黑");
//            cpv.setAttributeUrl(pic);
//            pv.add(cpv);
//            e.setPropertyValues(pv);
//            propertyValues.add(e);
//            catalog.setPropertyValues(propertyValues);
//            catalogs.add(catalog);
//            product.setCatalogs(catalogs);
//            addproductbean.setProduct(product);
//            addproductbean.setUserID(sellerId);
//            // 使用userid获取loginid
//            String loginid = new YmtUsersWapper().getYmtUsers(sellerId).getSloginid();
//            addproductbean.setLoginID(loginid);
//            addproductcall.setData(false, addproductbean);
//            Logger.comment("卖家:" + sellerId + "创建一个M端商品");
//            addproductcall.callService();
//            Logger.debug("创建商品request：" + addproductcall.getEntityString());
//            Logger.debug("创建商品response：" + addproductcall.getReturnData());
//            productId = addproductcall.getProductID();
//            String catalogId = new YmtCatalogsWapper().selectBySproductId(productId).getScatalogid();
//            productInfo.put("productId", productId);
//            productInfo.put("catalogId", catalogId);
//            productInfo.put("productName", productName);
//            productInfo.put("pic", pic);
//            productInfo.put("price", new BigDecimal(df.format(price)));
//            productInfo.put("weight", weight);
            productInfo.put("productId", TestDataManager.getRandomUUID()
                    .toString());
            productInfo.put("catalogId", TestDataManager.getRandomUUID()
                    .toString());
            productInfo.put("productName", "自动化测试商品");
            productInfo.put("pic",
                    "http://p243.img.ymatou.com:10243/upload/productdes/7749d985e60e45a7a7c556873775f998.jpg");
            productInfo.put("price", new BigDecimal(260));
            productInfo.put("weight", new BigDecimal(5));
        } catch (Exception e) {
        }
        return productInfo;
    }

    /**
     * 创建一个C2C直播商品<br>
     * 根据策略不同会生成不同规则的产品<br>
     * 1.<br>
     * 物流的类型根据买手国家随机取值 贝海直邮 支持 本土退货 价格10元 库存 10 <br>
     * 
     * @param mode 1贝海直邮
     * @param sellersellerAccessToken 买手的登录token
     * @return Map productinfo<br>
     *         {productid=e4dc15ee-e5bc-4a22-912e-9178e1aa4caf, price=1,
     *         pic=http://p243.img.ymatou.com
     *         :10243/upload/productdes/3afa103d4ec4466f824b9f0458d6f4e2.jpg,
     *         productName=接口自动化测试Test216bb8d258ab4e1786b5e12e1484da34}
     */
    public static HashMap<String, Object> createC2CProduct(String sellerAccessToken, int mode) {
        HashMap<String, Object> productInfo = new HashMap<String, Object>();
        String productId = null;
        // 物流类型 配送类型(-1：没有选择 0：暂不选择 2：直邮 3：贝海直邮 7：拼邮)
        int delType = 0;
        // 是否包邮
        boolean freeShipping = true;
        // 是否立即上架
        boolean onShelfNow = true;
        // 是否包税 包税
        int tariffType = 1;
        // 退货条件 0不支持、1本土退货、2官方本土退货
        int localReturn = 0;
        // 限购数量
        int limitedNumber = 0;
        // 商品价格
        BigDecimal price = new BigDecimal(10.00);
        BigDecimal vipPrice = new BigDecimal(8.00);
        BigDecimal newCustomerPrice = new BigDecimal(9.00);
        // 库存
        int stockNum = 10;
        switch (mode) {
            case 1:
                localReturn = 1;
                limitedNumber = 5;
                stockNum = 10;
                break;
            default:
                Logger.debug("createC2CProduct创建C2C直播产品模式错误，创建失败");
                return null;
        }
        try {
            // 买手
            Map m = AuthCallService.signAuth(sellerAccessToken);
            int sellerId = (Integer) m.get("userId");
            // 查询该买手能发物流类型
            List<Map> catalogs = new DefaultWapper().selectCatalogStatusByCountryId(sellerId);
            if (catalogs.size() > 0) {
                int index = new Random().nextInt(catalogs.size() - 1);
                delType = (Integer) catalogs.get(index).get("CatalogStatus");
            }
            int activityId = C2CCallService.getActivityIdBySeller(sellerAccessToken);
            int count = 0;
            // activityId=-1 当前时间端有直播活动，但未开始
            // activityId=1 当前时间段没有直播活动
            if (activityId == 1 || activityId == -1) {
                // 创建一个直播活动
                C2CCallService.createActivity(sellerAccessToken);
            }
            activityId = C2CCallService.getActivityIdBySeller(sellerAccessToken);
            while (activityId == -1 && count < 3) {
                Thread.sleep(2000);
                activityId = C2CCallService.getActivityIdBySeller(sellerAccessToken);
                count++;
            }
            if (activityId == -1) {
                throw new Exception("sellerId:" + sellerId + "创建一个直播商品出现异常。activityId=" + activityId);
            }
            // 添加直播商品
            AddProductV2Bean addProductBean = new AddProductV2Bean();
            AddProductV2Call addProductCall = new AddProductV2Call();

            addProductBean.setAccessToken(sellerAccessToken);
            addProductBean.setActivityId(activityId);
            addProductBean.setAppName("Seller");
          
            BrandBean brand = new BrandBean();
            // 品牌名称
            brand.setBrandName("autotest商品");
            brand.setIsRecommend(true);
            // brand.setRelatedId("");
            addProductBean.setBrand(new JSONObject().fromObject(brand).toString());
            CategoryBean category = new CategoryBean();
            // 品类Id
            category.setCategoryId("9");
            category.setIsRecommend(true);
            // category.setRelatedId("");
            addProductBean.setCategory(new JSONObject().fromObject(category).toString());
            addProductBean.setClientId("6b807685f0c7bfd3632b0aa689a8abe6");
            addProductBean.setClientType(1);
            addProductBean.setClientUserId(sellerId);
            // 物流类型 配送类型(-1：没有选择 0：暂不选择 2：直邮 3：贝海直邮 7：拼邮)
            addProductBean.setDelType(delType);
            addProductBean.setLocalReturn(localReturn);
            addProductBean
                    .setDeviceToken("F6C0D4D2C51F1703C536C3A44FD36C1DDFAF8494E8D596EEA4B2603B3C3067AA656F7AADAB985AFD96780FD844AF3C957B290A185CD78018");
            // 商品的有效期不用传，自动同步活动的有效期
            // addProductBean.setExpireHours("");
            addProductBean.setGuid(TestDataManager.getRandomUUID());
            addProductBean.setIsTop(0);
            addProductBean.setLimitedNumber(limitedNumber);
            addProductBean.setNoticeRisk(false);
            // 是否包邮
            addProductBean.setFreeShipping(freeShipping);
            // 是否立即上架
            addProductBean.setOnShelfNow(onShelfNow);
            // 是否包税
            addProductBean.setTariffType(tariffType);
            addProductBean.setUserId(sellerId);
            addProductBean.setVipPrice(vipPrice);
            addProductBean.setNewCustomerPrice(newCustomerPrice);
            addProductBean.setPrice(price);
            addProductBean.setWifi(0);
            addProductBean.setApp("seller");
            addProductBean.setOs("iPhone5");
            String productDesc = "autotest测试商品";
            addProductBean.setProductDesc(productDesc);
            String pic =
                    "http://pc2.img.ymatou.com/G01/shangou/M00/09/B1/rBBlD1aWE-yAcs8mAADmBBciABc019-original_o.jpg";
            addProductBean.setProductPics(pic);
            // 库存
            addProductBean.setStockNum(stockNum);
            addProductBean.setSys("8.4.1");
            addProductBean.setUserPosition("中国上海市闸北区珠江创意中心1602");
            addProductBean.setVersion("2.3.1");
            addProductCall.setData(false, addProductBean);
            Logger.comment("新创建一个C2C直播商品");
            addProductCall.callService();
            Logger.debug("addProductCall send:" + addProductCall.getEntityString());
            Logger.debug("addProductCall response:" + addProductCall.getReturnData());
            // 查询product id
            productId = C2CCallService.getActivityProductIdBySeller(sellerAccessToken, activityId);
            // 查询catalogId
            String catalogId = new AppDefaultWapper().getCatalogByProId(productId);
            productInfo.put("productId", productId);
            productInfo.put("catalogId", catalogId);
            productInfo.put("activityId", activityId);
            productInfo.put("pic", pic);
            productInfo.put("productDesc", productDesc);
            productInfo.put("price", price);
        } catch (Exception e) {
            e.printStackTrace();
            productInfo.put("productId", "1234567");
            productInfo.put("catalogId", TestDataManager.getRandomUUID()
                    .toString());
            productInfo.put("activityId", 82000);
            productInfo.put("productDesc", "自动化测试商品");
            productInfo.put("pic",
                    "http://p243.img.ymatou.com:10243/upload/productdes/7749d985e60e45a7a7c556873775f998.jpg");
            productInfo.put("price", new BigDecimal(230));
        }
        return productInfo;
    }

    public static void main(String args[]) {
        /*
         * for (int i = 1; i <= 8; i++) { HashMap<String, Object> m =
         * ProductCallService.createProduct(288484, i); Logger.debug(m); String pid =
         * (String)m.get("protected"); if (pid != null) { String cid = new
         * YmtCatalogsWapper().selectBySproductId(pid).getScatalogid(); Logger.debug(cid); } }
         */
        Map m = AuthCallService.authLogin("zhangyi_seller001", "123456");
        String accessToken = (String) m.get("accessToken");

        createC2CProduct(accessToken, 1);

        // Logger.debug("now:"+DateUtils.getBeforeOrNextSecond(3));

    }
}
